home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Your Choice 3
/
Your Choice Software Collection 3.iso
/
prgmming
/
pcl4pb42
/
login.bas
< prev
next >
Wrap
BASIC Source File
|
1994-09-27
|
4KB
|
184 lines
'
' Login.BAS Example Program
'
$ERROR ALL ON
$LIB ALL OFF
DEFINT A-Z
$INCLUDE "PCL4PB.BI"
$INCLUDE "MODEM_IO.BI"
$INCLUDE "DEFINES.BI"
$LINK "PCL4PB.OBJ"
$LINK "MODEM_IO.PBU"
DECLARE FUNCTION MyExit(BYVAL Port AS INTEGER) AS INTEGER
DECLARE FUNCTION Login(BYVAL Port AS INTEGER, _
Send AS STRING, _
BYVAL Pace AS INTEGER, _
Expect AS STRING, _
BYVAL Tics AS INTEGER) AS INTEGER
%FALSE = 0
%TRUE = NOT %FALSE
%ESC = 27
'declare variables
DIM Buffer(256+16) AS BYTE
DIM BufSeg AS WORD
DIM Port AS INTEGER
DIM I AS INTEGER
DIM L AS INTEGER
DIM Code AS INTEGER
DIM LibVer AS INTEGER
DIM BaudCode AS INTEGER
DIM AnyKey AS STRING
DIM RATES(12) AS STRING
DIM PARMS AS STRING
DIM ARG1 AS STRING
DIM ARG2 AS STRING
RATES$(1) = "300"
RATES$(2) = "600"
RATES$(3) = "1200"
RATES$(4) = "2400"
RATES$(5) = "4800"
RATES$(6) = "9600"
RATES$(7) = "19200"
RATES$(8) = "38400"
RATES$(9) = "57600"
RATES$(10) = "115200"
PARMS$ = RTRIM$(COMMAND$)
I = INSTR(PARMS$, " ")
IF I < 1 THEN
PRINT " Usage: Login <Port> <BaudRate>"
PRINT "Example: Login 1 9600"
END 1
END IF
L = LEN(PARMS$)
ARG1$ = LEFT$(PARMS$, I - 1)
ARG2$ = LTRIM$(RIGHT$(PARMS$, L - I))
BaudCode = -1
'Get COM port
Port = VAL(ARG1$) - 1
'Get baud code
FOR I = 1 TO 10
IF RATES$(I) = ARG2$ THEN
BaudCode = I - 1
EXIT FOR
END IF
NEXT I
'Verify good baud rate
IF BaudCode = -1 THEN
PRINT "Cannot recognize baud rate "; ARG2$
END
END IF
'Reset port
BufSeg = 1 + VARSEG(Buffer(0)) + (VARPTR(Buffer(0)) \ 16)
Code = SioRxBuf(Port, BufSeg, %Size256)
IF Code < 0 THEN
PRINT "Error "; Code; " returned from SioRxBuf()"
Code = SioError(Code)
END
END IF
Code = SioReset(Port, BaudCode)
CLS
IF Code < 0 THEN
PRINT "Error "; Code; " returned from SioReset()"
Code = SioError(Code)
END
END IF
PRINT "Login 9/25/94"
PRINT " "
LibVer = SioInfo(ASC("V"))
PRINT "Library Version: "; LibVer \ 16; ".";
PRINT LibVer - 16 * (LibVer \ 16)
Code = SioDTR(Port, %SET.LINE)
Code = SioRTS(Port, %SET.LINE)
IF %AT.COMMAND.SET THEN
PRINT "ready"
ELSE
PRINT "AT.COMMAND.SET must be 1. See DEFINES.BI"
STOP
END IF
'send "AT" to modem & expect "OK" back
IF NOT Login(Port, "!AT!", 5, "OK", 180) THEN
Code = MyExit(Port)
END IF
'initialize modem & expect "OK" back
IF NOT Login(Port, "AT E1 S7=60 S11=60 V1 X1 Q0 S0=1!", 5, "OK", 90) THEN
Code = MyExit(Port)
END IF
'send "ATDT1,205,880,9748" & expect "CONNECT" back
IF NOT Login(Port, "ATDT1,205,880,9748!", 5, "CONNECT", 1092) THEN
Code = MyExit(Port)
END IF
'send CR to get prompt
Code = SioPutc(Port,13)
PRINT "Entering TERMINAL loop..."
DO
'Look at incoming serial
Code = SioGetc(Port, 1)
IF Code = 13 THEN
PRINT
ELSEIF Code >= &H20 THEN
PRINT CHR$(Code);
END IF
'Anything to send
AnyKey$ = INKEY$
IF AnyKey$ <> "" THEN Code = SioPutc(Port, ASC(AnyKey$))
IF AnyKey$ = CHR$(%ESC) THEN EXIT DO
LOOP
PRINT "User typed ESC..."
Code = MyExit(Port)
END
FUNCTION Login(BYVAL Port AS INTEGER, _
Send AS STRING, _
BYVAL Pace AS INTEGER, _
Expect AS STRING, _
BYVAL Tics AS INTEGER) AS INTEGER
DIM RC AS INTEGER
RC = ModemSendTo(Port, Pace, Send)
IF ModemWaitFor(Port, Tics, %FALSE, Expect) THEN
PRINT
Login = %TRUE
ELSE
PRINT Expect; " not received"
Login = %FALSE
END IF
END FUNCTION
FUNCTION MyExit(BYVAL Port AS INTEGER) AS INTEGER
DIM Code AS INTEGER
Code = SioDone(Port)
END FUNCTION
END